Date		:	6 d�cembre 1991
		Protection	:	
		Programme	:       PERESTROIKA
		Outils		:	SOFT-ICE V2.50
		Fichier		:	PERESTRO.EXE
		Temps pass�	:	10 MINUTES
		Soci�t�		:	SHAREWARE
		Divers	        :	Suppression du chant sovi�tique.
		Origine		:	N.T.
		Num�ro		:	153

		
	Un petit jeu en SHAREWARE d'origine SOVIETIQUE �crit en TURBO C ce
	qui prouve que le C peut parfaitement convenir � un jeu d'arcade
	aux performances honn�tes.
	Malheureusement ce dernier vous assomme avec un chant SOVIETIQUE
	impossible � "JUMPER" pendant le d�but du jeu et ce durant 15 secondes.
	Je n'ai rien contre les chants SOVIETIQUES mais celui-l� utilise le
	HP du PC pour s'exprimer ce qui est d'un effet plus que crispant 
	lorsque l'on est habitu� aux chants harmonieux que dispense une
	SOUNDBLASTER. J'ai donc allum� SOFT-ICE pour faire une tr�panation en
	profondeur.
	Le fichier est comprim� par LZEXE version 0.9 - Il va falloir qu'ils
	rattrapent leur retard !
	Dans l'ordre on trouve le CALLF qui affiche l'image d'entr�e:

	1499:00xx 9A0D00C319	CALL	19C3:000D

	Puis celui qui prodigue le chant:

	1499:00AA FF361C1C	PUSH	[1C1C]
	1499:00AE 9A2908B40F	CALL	0FB4:0829
	1499:00B3 83C408	ADD	SP,+8

	En le supprimant par un EB03 ( et surtout pas par 5 NOP voir DLII.DEP )
	ceci fonctionne avec toutefois un inconv�nient : l'image d'entr�e ne
	fait que passer, on saute directement dans le jeu.
	R�fl�chissons, on dispose de 5 octets. En y pla�ant une attente de CHAR
	par l'interm�diaire de l'INT 07 on en utilise que 4. On y rajoute un
	NOP et �a y est le trou est combl�.

	MOV AH,07	; 2 octet
	INT 21h		; 2 octet
	NOP		; 1 octet

	La modif est faite et .... �a se plante. 
	A chaque fois j'oublie la table de relocation des sauts inter-segments
	qui est cr�e lors du linkage du fichier OBJ en EXE. Cette table
	contient tous les sauts dont il faut adapter l'adresse CS en fonction
	de l'endroit de chargement du programme. J'ai supprim� le saut mais
	lors de l'installation du programme les derniers octets du saut sont
	�cras�s par la table de rellocation qui y met le d�placement figurant
	dans le HEADER de l'EXE.
	Je pourrais essayer de supprimer ce saut de la table mais c'est plus
	simple de sauter dans un COPYRIGHT quelconque d'y utiliser 5 octets et
	de revenir.
	On trouve dans le m�me SEGMENT ce qui �vite pas mal de gymnastique le
	COPYRIGHT de l'auteur ainsi que son adresse + num�ro de t�l�phone.
	C'est largement suffisant. L'adresse se situe en $ + BA0F = BAC0.
	
	1499:BAC0 B407		MOV AH,7	; Sous fonction attente de char.
	1499:BAC2 CD21  	INT 21		; DOS CALL.
	1499:BAC4 E9EC45	JMP 00B3	; SAUT CORRIGE.	

	Et en

	1499:00AE E90FBA  	JMP BAC0	
	1499:00B1 XXYY    	???		; Octets mis en place par la
						; table de saut.
	1499:00B3 83C408  	ADD SP,+8	; On revient ici.

	Avec PCTOOLS chercher 2D2D2D2D2D2D2D et y placer B407CD21E9EC45 puis
	FF361C1C9A2908 en y pla�ant E90FBA � la place de 9A2908.	     			

	FREDDY